fix: Prevent BMI2 instruction crash on AVX-only CPUs #7817
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Fix: Prevent BMI2 instruction crash on AVX-only CPUs
Problem
The
llama-cpp-avxbinary selection incorrectly runs on CPUs with AVX but without BMI2(e.g., Intel Ivy Bridge). This causes crashes with "EOF" errors during model warmup
because the binary contains BMI2 instructions (shlx, mulx, etc.).
Notes for Reviewers
Solution:
Add BMI2 feature check before selecting the AVX binary. CPUs with AVX but without BMI2
now safely fall back to
llama-cpp-fallback:llama-cpp-fallback - x86_64 (SSE2 only)
llama-cpp-avx - AVX + no BMI2 (-mno-bmi -mno-bmi2)
llama-cpp-avx2 - AVX2 + FMA + BMI2 (unchanged)
llama-cpp-avx512 - AVX-512 (unchanged)
Testing:
Affected CPUs
Signed-off-by: Coffee Run Hobby 294crhwtf@mozmail.com